package com.chenfan.mcn.model.dto;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.io.Serializable;

/**
 * 导入红人信息批量更新DTO
 * @author wulg
 * @date 2023/6/15
 */
@SuppressWarnings({"deprecation", "AlibabaUndefineMagicConstant"})
@Data
public class StarBasicDataInfoInputDTO implements Serializable {

    private static final long serialVersionUID = -8892060003509180023L;

    /**
     * 红人ID
     */
    @Excel(name = "红人ID")
    @NotBlank(message ="【红人ID】必填")
    @Size(max = 20, message = "【红人ID】长度不能超过{max}个字符")
    private String starCode;

    /**
     * 状态：0-启用，1-禁用
     */
    private Integer starStatus;

    /**
     * 状态名称：0-启用，1-禁用
     */
    @Excel(name = "状态")
    @NotNull(message ="【状态】必填")
    @Pattern(regexp = "^(启用|禁用)$", message = "【状态】录入错误，仅能录入禁用或者启用！")
    private String starStatusName;

    /**
     * 真实姓名
     */
    @Excel(name = "真实姓名")
    @NotBlank(message ="【真实姓名】必填")
    @Size(max = 50, message = "【真实姓名】长度不能超过{max}个字符")
    private String starName;

    /**
     * 红人昵称
     */
    @Excel(name = "红人昵称")
    @NotBlank(message ="【红人昵称】必填")
    @Size(max = 50, message = "【红人昵称】长度不能超过{max}个字符")
    private String starNickname;

    /**
     * 证件类型（0居民身份证、1其他）
     */
    private Integer idCardType;

    /**
     * 证件类型（0居民身份证、1其他）
     */
    @Excel(name = "证件类型")
    @Pattern(regexp = "^(居民身份证|其他)$", message = "“证件类型”仅能输入“居民身份证”或“其他”！")
    private String idCardTypeName;


    /**
     * 身份证号码
     */
    @Excel(name = "身份证号码")
    private String idCard;

    /**
     * 是否按执行结算
     */
    private Integer isAllPlatform;

    /**
     * 是否按执行结算
     */
    @Excel(name = "是否按执行结算")
    @NotBlank(message = "【是否按执行结算】必填")
    @Pattern(regexp = "^(是|否)$", message = "【是否按执行结算】录入错误，仅能录入【是】或者【否】")
    private String isAllPlatformName;

    /**
     * 是否接受公司统一返点：0否 1是
     */
    private Integer uniformRebate;

    /**
     * 是否接受公司统一返点：0否 1是
     */
    @Excel(name = "是否接受公司统一返点")
    @NotBlank(message = "【是否接受公司统一返点】必填")
    @Pattern(regexp = "^(是|否)$", message = "【是否接受公司统一返点】录入错误，仅能录入【是】或者【否】")
    private String uniformRebateName;

    /**
     * 经纪人id
     */
    private Long starAgentId;

    /**
     * 经纪人名称
     */
    @Excel(name = "经纪人")
    @NotBlank(message ="【经纪人】必填")
    private String starAgentName;

    /**
     * 执行人id
     */
    private Long executorId;

    /**
     * 执行人名称
     */
    @Excel(name = "执行人")
    @NotBlank(message ="【执行人】必填")
    private String executorName;

    /**
     * 性别(0-男，1-女)
     */
    private Integer gender;

    /**
     * 性别(0-男，1-女)
     */
    @Excel(name = "性别")
    @Pattern(regexp = "^(男|女)$", message = "性别录入错误，仅能录入男或者女！")
    private String genderName;

    /**
     * 备注
     */
    @Excel(name = "备注")
    @Size(max = 255, message = "【备注】长度不能超过{max}个字符")
    private String remark;

    public Integer getStarStatus() {
        if("启用".equals(this.getStarStatusName())) {
            return 0;
        } else if("禁用".equals(this.getStarStatusName())) {
            return 1;
        }
        return null;
    }

    public Integer getIdCardType() {
        if("居民身份证".equals(this.getIdCardTypeName())) {
            return 0;
        } else if("其他".equals(this.getIdCardTypeName())) {
            return 1;
        }
        return null;
    }

    public Integer getGender() {
        if("男".equals(this.getGenderName())) {
            return 0;
        } else if("女".equals(this.getGenderName())) {
            return 1;
        }
        return null;
    }

    public Integer getIsAllPlatform() {
        if("是".equals(this.getIsAllPlatformName())) {
            return 0;
        } else if("否".equals(this.getIsAllPlatformName())) {
            return 1;
        }
        return null;
    }

    public Integer getUniformRebate() {
        if("是".equals(this.getUniformRebateName())) {
            return 1;
        } else if("否".equals(this.getUniformRebateName())) {
            return 0;
        }
        return null;
    }
}